/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hochschild.sgv.dao.impl;

import com.hochschild.sgv.dao.ReportePlanificacionDao;
import com.hochschild.sgv.domain.FiltroReporte;
import com.hochschild.sgv.domain.Reporte;
import com.hochschild.sgv.util.ConexionBD;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author LENOVO
 */
public class ReportePlanificacionDaoImpl implements ReportePlanificacionDao{
    public List<Reporte> getVacacionesPlanificadas(FiltroReporte filtro){
        Connection conn = null;
        ConexionBD conBD = null;
        CallableStatement cstmt = null;
        ResultSet rst = null;
        Reporte reporte = null;
        List<Reporte> lstReporte = new ArrayList<Reporte>();
        
        try {
            conBD = new ConexionBD();
            conn = conBD.getConnection();

            cstmt = conn.prepareCall("{call stpr_SGV_reporteVacacionesPlanificadas (?,?,?,?,?,?,?)}");

            cstmt.setString("idSociedad", filtro.getIdSociedad());
            cstmt.setString("idDivision", filtro.getIdDivision());
            cstmt.setString("idSubDivision", filtro.getIdSubDivision());
            cstmt.setString("apellidoColaborador", filtro.getApellidoColaborador());
            cstmt.setString("apellidoAprobador", filtro.getApellidoAprobador());
            cstmt.setString("fechaInicio", filtro.getFechaInicio());
            cstmt.setString("fechaFin", filtro.getFechaFin());

            System.out.println("idSociedad: " + filtro.getIdSociedad() + " idDivision: " + filtro.getIdDivision() + " idSubDivision: " + filtro.getIdSubDivision() + " apellidoColaborador: " + filtro.getApellidoColaborador() + " apellidoAprobador: " + filtro.getApellidoAprobador() + " fechaInicio: " + filtro.getFechaInicio() + " fechaFin: " + filtro.getFechaFin()  );
            rst = cstmt.executeQuery();

            while (rst.next()) {
                reporte = new Reporte();
                reporte.setIdUsuarioColaborador(rst.getString("idUsuario"));
                reporte.setNombreColaborador(rst.getString("nombreCompletoColaborador"));
                reporte.setPuestoColaborador(rst.getString("puestoColaborador"));
                reporte.setNombreAprobador(rst.getString("nombreCompletoAprobador"));
                reporte.setPuestoAprobador(rst.getString("puestoAprobador"));
                reporte.setAreaColaborador(rst.getString("area"));
                reporte.setFechaInicio(rst.getString("fechaInicio"));
                reporte.setFechaFin(rst.getString("fechaFin"));
                reporte.setNumeroDias(rst.getString("nroDias"));
                reporte.setEstado(rst.getString("estado"));

                lstReporte.add(reporte);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (cstmt != null) {
                try {
                    cstmt.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (rst != null) {
                try {
                    rst.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
        System.out.println("lstReporte.size(): " + lstReporte.size());
        return lstReporte;
    }
    
    public List<Reporte> getStatusPlanificadas(FiltroReporte filtro){
        Connection conn = null;
        ConexionBD conBD = null;
        CallableStatement cstmt = null;
        ResultSet rst = null;
        Reporte reporte = null;
        List<Reporte> lstReporte = new ArrayList<Reporte>();

        try {
            conBD = new ConexionBD();
            conn = conBD.getConnection();
            System.out.println("call stpr_SGV_reporteStatusPlanificadas");
            cstmt = conn.prepareCall("{call stpr_SGV_reporteStatusPlanificadas (?,?,?,?,?,?,?,?)}");

            cstmt.setString("idSociedad", filtro.getIdSociedad());
            cstmt.setString("idDivision", filtro.getIdDivision());
            cstmt.setString("idSubDivision", filtro.getIdSubDivision());
            cstmt.setString("apellidoColaborador", filtro.getApellidoColaborador());
            cstmt.setString("apellidoAprobador", filtro.getApellidoAprobador());
            cstmt.setString("fechaInicio", filtro.getFechaInicio());
            cstmt.setString("fechaFin", filtro.getFechaFin());
            cstmt.setString("estado", filtro.getEstado());

            rst = cstmt.executeQuery();
            
            while (rst.next()) {
                reporte = new Reporte();
                reporte.setIdUsuarioColaborador(rst.getString("idUsuario"));
                reporte.setNombreColaborador(rst.getString("nombreCompletoColaborador"));
                reporte.setPuestoColaborador(rst.getString("puestoColaborador"));
                reporte.setNombreAprobador(rst.getString("nombreCompletoAprobador"));
                reporte.setPuestoAprobador(rst.getString("puestoAprobador"));
                reporte.setAreaColaborador(rst.getString("area"));
                reporte.setEstado(rst.getString("estado"));

                lstReporte.add(reporte);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (cstmt != null) {
                try {
                    cstmt.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (rst != null) {
                try {
                    rst.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
        System.out.println("lstReporte.size(): " + lstReporte.size());
        return lstReporte;
    }
}